mod grpc_client;
mod grpc_server;

use std::process::Command;
use std::thread;
use std::time::Duration;

fn main() {
    println!("启动Rust gRPC Broken Pipe自动重连演示系统...");

    // 启动gRPC服务器
    let server_handle = thread::spawn(|| {
        println!("启动gRPC服务器...");
        let status = Command::new("cargo")
            .arg("run")
            .arg("--bin")
            .arg("grpc_server")
            .status()
            .expect("无法启动gRPC服务器");

        if status.success() {
            println!("gRPC服务器启动成功");
        } else {
            println!("gRPC服务器启动失败");
        }
    });

    // 等待服务器启动
    thread::sleep(Duration::from_secs(3));

    // 启动gRPC客户端
    let client_handle = thread::spawn(|| {
        println!("启动gRPC客户端...");
        let status = Command::new("cargo")
            .arg("run")
            .arg("--bin")
            .arg("grpc_client")
            .status()
            .expect("无法启动gRPC客户端");

        if status.success() {
            println!("gRPC客户端运行完成");
        } else {
            println!("gRPC客户端运行失败");
        }
    });

    server_handle.join().unwrap();
    client_handle.join().unwrap();

    println!("演示系统执行完成");
}
